package smartMarket.pessoa;

import banco.pessoa.BancoFornecedor;
import excecoes.estoque.DinheiroNegativoException;
import excecoes.pessoa.CpfCnpjExistenteException;
import excecoes.pessoa.CpfCnpjInvalidoException;
import excecoes.pessoa.LocalizacaoInvalidaException;
import excecoes.pessoa.NomeFantasiaNuloException;
import excecoes.pessoa.NomeInvalidoException;
import java.sql.SQLException;

public class Fornecedor extends Pessoa {

    //Atributos
    private float limiteDeCredito;
    private String nomeFantasia;

    //Gets
    public float getLimiteDeCredito() {
        return limiteDeCredito;
    }

    public String getNomeFantasia() {
        return nomeFantasia;
    }

    //Sets
    public void setNomeFantasia(String nomeFantasia) throws NomeFantasiaNuloException {
        if (nomeFantasia.equals("")) {
            throw new NomeFantasiaNuloException();
        }
        this.nomeFantasia = nomeFantasia;
    }

    public void setLimiteDeCredito(float limiteDeCredito) throws DinheiroNegativoException {
        if (limiteDeCredito <= 0) {
            throw new DinheiroNegativoException("Campo limite tem que estar acima de 0,00.");
        }

        this.limiteDeCredito = limiteDeCredito;
    }
    
    @Override
    public void setCPF_CNPJ(String CNPJ) throws CpfCnpjInvalidoException, SQLException, NullPointerException, NomeInvalidoException, DinheiroNegativoException, CpfCnpjExistenteException, LocalizacaoInvalidaException {
        
        this.CPF_CNPJ = CNPJ;
        
    }
    
    @Override
    public void setCPF_CNPJ(String CNPJ, boolean adicionamento) throws CpfCnpjInvalidoException, SQLException, NullPointerException, NomeInvalidoException, DinheiroNegativoException, CpfCnpjExistenteException, LocalizacaoInvalidaException, NomeFantasiaNuloException {
        
        if (CNPJ.equals("   .   .   -  ")) {
            throw new CpfCnpjInvalidoException();
        } else { 
            BancoFornecedor bf = new BancoFornecedor();
            if (bf.buscar(CNPJ)!=null) {
                throw new CpfCnpjExistenteException();
            }
        }
        
        this.CPF_CNPJ = CNPJ;
        
    }
}